<?php
namespace app\common\controller;
use think\Controller;

/**
 * 系统核心类
 * 含有（模块初始化，配置初始化，权限控制）
 */
class Core extends Controller{
	
	public $_SysData;
	public $_MCA;
	public $_Uid;
	public $_Uinfo;
	
	public $_IsAuth=true;

    //系统初始化
    protected function initialize(){
		parent::initialize();
		
		// 引用函数库文件
		$ExtFuncFiles = glob(APP_PATH. "common/func/*.php");
		foreach($ExtFuncFiles as $_ExtFile){
			include_once($_ExtFile);
		}
		
		//获取上次缓存时间
		$_SysData = cache('sys');
		if(!$_SysData){
			//获取缓存
			$_CacheList = db('Cache')->where(['status'=>1])->select();
			foreach( $_CacheList as $K => $V){
				$_SysData[$V['name']] = model($V['model'])->_Cache(true);
			}
		}
        //将数据库中的配置写入配置数据
        config($_SysData['config'], 'app');
		//设置系统缓存
        $this->_SysData = $_SysData;
		$this->assign('_SysData',$this->_SysData);
		
        //初始化路由信息
        $this->_MCA = _Mca();
		
		//判断当前模块是否在可访问列表中
		if (!array_key_exists($this->_MCA['m'],$_SysData['module'])) {
            $this->error(lang('no_module'));
		}
		
        //获取用户ID
        $this->_Uid = _Uid();
        if($this->_Uid){
            $this->_Uinfo = _Uinfo();
			$this->assign('_Uid',$this->_Uid);
			$this->assign('_Uinfo',$this->_Uinfo);
        }
		
        //判断当前模块是否要求Auth
        if(config('is_auth') && $this->_IsAuth){
            //判断当前用户是否在登陆状态 跳转地址是否为登陆网关
            if(!$this->_Uid && !_AuthNotMca($this->_MCA)){
                //未登录 跳转到当前配置中的登陆地址
                $this->redirect(config('auth_gateway_login'));
                exit;
            }
			
            //当前网关是否需要进行auth验证
            if(!_CheckAuth($this->_MCA,$this->_Uid)){
                $this->error(lang('no_check_auth'));
            }
        }
    }

}
